tomcat 控制台日志输出到文件

您所在的位置:网站首页 log 文件 tomcat 控制台日志输出到文件

tomcat 控制台日志输出到文件

2023-02-25 21:31| 来源: 网络整理| 查看: 265

方法一 

   最近测试遇到一个问题,咱们的项目使用windows2003服务器,tomcat+oracle数据库。项目中有两个测试人员,常常须要查看日志定位问题,可是有两个问题:     1.windows下tomcat输出日志跟linux下不同,linux能够远程链接使用tail命令很轻松就能够看到日志,而且能够随时中止。但windows的日志只输入到控制台,不输出到日志文件。这就使得只有开着控制台才能看获得日志,并且不能ctrl+C中止截取。 html

    2.用远程桌面链接的话,两个测试人员不可能同时看获得控制台,而若使用VNC,RADMIN等软件,又会形成双方操控很混乱。     因此就在想,要是能像linux那样随时查看日志又不用操控控制台就行了。 java

    解决思路:     1.让tomcat日志输出到文件。这个明显能够实现的。     2.找个软件可以链接windows,而且使用命令动态查看日志文件,好比tail。其实linux中的大多数命令windows也都有,只不过被界面封装了,如今linux的广大爱好者早就研发出了将windows命令转为了相应的linux命令的软件,因此也不成问题。 linux

    下面就开始寻找解决方法了: shell

    1.让tomcat日志输出到文件     通常启动tomcat时都用startup.bat,但又有多少人真正研究过这个bat文件中到底暗藏什么玄机呢?     咱们来看一下这个bat文件。它使用call "%EXECUTABLE%" start %CMD_LINE_ARGS%这句话来调用catalina.bat启动。这句话执行的命令就至关于控制台输入catalina.bat start。怎么样,是否是跟linux很像啦,不过这个start是会在新窗口中启动catalina.bat,并将日志文件输出到新窗口中,这显然不是咱们要的效果。咱们将它改为call "%EXECUTABLE%" run %CMD_LINE_ARGS%。这样控制台就不会输出日志文件了,让catalina.bat去决定日志输出在哪里吧。 数据库

    那再来看一下catalina.bat。这里我就直接引用网上的方法了:     寻找以%ACTION%结尾的四处,在后面加上 >> %CATALINA_BASE%\logs\detailLog.%DATE:~0,10%.log      detailLog是我本身起的名字,你们能够随意更改,可是注意不要与默认日志文件冲突,不然启动会报个错,尽管可有可无。那%DATE:~0,10%是用来截取系统时间的(这里应该注意系统生成的时间格式问题,若是是2013/04/02则会出错,请确保系统时间格式)。在个人服务器上echo %DATE%,显示出的是“2013-04-02 星期二”,截取0-10位,也就是“2013-04-02”,因此今天产生的log文件名字应该是 detailLog.2013-04-02.log 这样再去双击startup.bat,就会发现控制台启动后再也不输出日志文件。再去查看detailLog.2013-04-02.log,会发现日志都在里面。那下面的工做,就是如何简单的将日志文件显示出来了。

    2.动态查询windows日志文件     咱们都喜欢用tail命令,那就去找个windows中的tail命令。     先下载一个UnxUtils,将它放在某个找获得的位置,解压,找到..\UnxUtils\usr\local\wbin目录,看到了吧,咱们熟悉的linux命令都在里面了。将这个路径加到服务器系统环境变量PATH中,再打开cmd,输入tail --help,显示出帮助信息,好了,可使用了。注意,远程桌面链接的童鞋,可能要在每个用户那里都从新保存一下环境变量,不然其余用户会不认识这个命令哦。

    这样的话,在cmd中输入tail logs\detailLog.2013-04-02.log,就跟linux效果同样啦。     我仍是以为不方便,每次都要输入一下,那何不写个bat文件呢?     桌面上新建记事本,     @echo off     tail -f E:\apache-tomcat-6.0.24-2\logs\detailLog.%DATE:~0,10%.log     保存为log.bat文件。直接双击搞定! apache

    另: 另外一个文章中的有详细的说明     因为把输出都重定向到了文件中,console中就没法实时显示日志内容了,如何作到既把日志保存到磁盘文件中,又能在屏幕上实时监控日志呢?

    看了不少dos命令,发现都没法作到。想到unix下有tail -f ,因而试着度娘了一下“dos tail”,还真找到了一个在dos下的tail命令,只是要先安装一个windows组件Windows Server 2003 Resource Kit Tools。 如安装目录为“D:\Program Files\Windows Resource Kits\Tools”,把这个路径加入到PATH环境变量。 在cmd下tail /? ,出现如下信息则说明安装成功了:

   usage: TAIL [switches] [filename]*    switches: [-?] display this message              [-n] display last n lines of each file (default 10)              [-f filename] keep checking filename for new lines

    在tomcat主目录的bin下新建一个bat脚本taillog.bat,内容为(修改成本身的日志名称): windows

if not exist "%CATALINA_HOME%\logs\catalina.%date:~0,10%.out" echo "" > %CATALINA_HOME%\logs\catalina.%date:~0,10%.out tail -f %CATALINA_HOME%\logs\catalina.%date:~0,4%-%date:~5,2%-%date:~8,2%.out

   最后在catalina.bat中调用这个脚本: ............ echo Using CATALINA_BASE: %CATALINA_BASE% echo Using CATALINA_HOME: %CATALINA_HOME% echo Using CATALINA_TMPDIR: %CATALINA_TMPDIR% if ""%1"" == ""debug"" goto use_jdk echo Using JRE_HOME: %JRE_HOME% start taillog.bat goto java_dir_displayed ..............

这样就能够即时把tomcat的应用日志输出到console,同时又按日期保存为日志文件了。

方法二:

I had the same situation, but I was using (liferay -> tomcat) startup.bat and it always opened up tomcat console. The way to edit the startup.bat file, so that it outputs the log into a file was like this:

Look for the line: tomcat

call "%EXECUTABLE%" start %CMD_LINE_ARGS% and edit it, so it looks like this: call "%EXECUTABLE%" run >..\logs\outputfile.log 2>&1 start %CMD_LINE_ARGS% run >..\logs\outputfile.log 2>&1

You can find your output in the tomcat's logs folder. The file is outputfile.log. 

引用:

1. windows下同时输出tomcat应用日志到文件和屏幕   服务器

2. windows下使用命令动态输出tomcat日志 oracle

3. How to redirect tomcat console log to files? Tomcat started via windows bat



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3